// utils/filesdownload.js
export default {
    // 新增多文件下载方法
    downloadAllFiles(urls) {
        uni.showLoading({ title: `正在下载(0/${urls.length})...` });

        let successCount = 0;
        const promises = urls.map((url, index) => {
            return new Promise((resolve) => {
                uni.downloadFile({
                    url: url,
                    success: (data) => {
                        if (data.statusCode === 200) {
                            uni.saveFile({
                                tempFilePath: data.tempFilePath,
                                success: (res) => {
                                    successCount++;
                                    // uni.showLoading({ title: `正在下载(${successCount}/${urls.length})...` });
                                    uni.hideLoading();
                                    resolve(true);
                                }
                            });
                        }
                    },
                    fail: () => resolve(false)
                });
            });
        });

        Promise.all(promises).then(results => {
            uni.hideLoading();
            const successNum = results.filter(r => r).length;
            if (successNum > 0) {
                uni.showToast({
                    title: `成功下载 ${successNum}/${urls.length} 个文件`,
                    icon: 'none',
                    duration: 3000
                });
            }
        });
    },

    // 单文件下载方法
    downloadFun(url) {
        //加载框动画
        uni.showLoading({ title: '正在下载……' });
        uni.downloadFile({
            url: url,//下载地址接口返回
            success: (data) => {
                if (data.statusCode === 200) {//下载成功状态码
                    //隐藏加载框
                    uni.hideLoading();
                    /**因为uni.downloadFile下载的是一个临时文件，
                    需要使用uni.saveFile将文件保存到本地 */
                    // #ifdef MP
                    const tempFilePath = data.tempFilePath;
                    uni.getFileSystemManager().saveFile({
                        tempFilePath: tempFilePath,
                        success: (saveRes) => {
                            uni.hideLoading();
                            uni.showToast({
                                title: '文件已保存: ' + saveRes.savedFilePath,
                                icon: 'success',
                                duration: 3000
                            });
                        },
                        fail: (err) => {
                            console.error('保存文件失败', err);
                            uni.hideLoading();
                            uni.showToast({ title: '保存文件失败', icon: 'none' });
                        }
                    });
                    // #endif
                    
                    // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO || MP-QQ || MP-KUAISHOU
                    // 小程序环境，提供预览功能
                    uni.openDocument({
                        filePath: encodeURI(tempFilePath),
                        showMenu: true,
                        success: function (res) {
                            uni.hideLoading();  // 隐藏加载提示
                            console.log('打开文档成功', res);
                        },
                        fail: function (err) {
                            uni.hideLoading();  // 隐藏加载提示
                            console.error('打开文档失败', err);
                        }
                    });
                    // #endif
                }
            },
            fail: (err) => {
                console.log(err);
                uni.showToast({
                    icon: 'none',
                    mask: true,
                    title: '文件下载失败',
                });
            },
        });
    },

    // 在文件末尾新增文件类型映射方法
    getFileType(filePath) {
        const ext = this.getFileExt(filePath);
        const typeMap = {
            'pdf': 'pdf',
            'doc': 'doc',
            'docx': 'docx',
            'xls': 'xls',
            'xlsx': 'xlsx',
            'ppt': 'ppt',
            'pptx': 'pptx',
            'txt': 'txt',
        };
        return typeMap[ext] || 'pdf'; // 默认使用pdf格式
    },

    // 新增文件后缀获取方法（如果不存在）
    getFileExt(filename) {
        return filename.split('.').pop().toLowerCase();
    }
}